/**
 * 字符串
 * 一、Java中操作字符串都有哪些类？它们之间有什么区别？
 * {@link java.lang.String}、{@link java.lang.StringBuilder}、{@link java.lang.StringBuffer}
 * 1、功能：
 * 2、可变性：
 * 3、线程安全：
 * 4、使用场景：
 * <p>
 * 二、这三者在效率上怎么说？
 * StringBulider > StringBuffer > String
 * <p>
 * 三、== 和 equals 的区别是什么
 * <p>
 * 四、如果我们不重写equals() 方法，会怎么样？
 * <p>
 * 五、重写equals的同时，我们需要重写hashCode()方法么？为什么？
 * 在重写equals()方法时，也有必要对hashCode()方法进行重写，尤其是当我们自定义一个类，想把该类的实例存储在集合中时。
 * hashCode方法的常规约定为：值相同的对象必须有相同的hashCode，也就是equals()结果为相同，那么hashcode也要相同，equals()结果为不相同，那么hashcode也不相同。
 * 当我们使用equals方法比较说明对象相同，但hashCode不同时，就会出现两个hashcode值，比如在HashMap中，就会认为这是两个对象，因此会出现矛盾，
 * 说明equals方法和hashCode方法应该成对出现，当我们对equals方法进行重写时，也要对hashCode方法进行重写。
 *
 * @author guodd
 * @version 1.0 use jdk 1.8
 */
package ch02_data.string;